package com.qzsoft.zhjd.machine.modules.machinereport.dto;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.List;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;

/**
 * @ClassName MachineReportUseRateDeptDto
 * @Description 按照机构单位统计利用率数据
 * @author linhuawei
 * @since 2021-11-09
 */
@Data
@EqualsAndHashCode(callSuper = false)
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ToString
public class MachineReportUseRateDeptDto {

    /**
     * 机构主键
     */
    private String deptPkid;

    /**
     * 机构编码
     */
    private String deptId;

    /**
     * 机构名称
     */
    private String deptName;

    /**
     * 工作时长
     */
    private Long workTime;

    /**
     * 怠速时长
     */
    private Long idleTime;

    /**
     * 静止时长
     */
    private Long offTime;

    /**
     * 有效工作时长
     */
    private Long effectiveTime;

    /**
     * 台班数
     */
    private BigDecimal taiban;

    /**
     * 统计天数
     */
    private Integer days;

    /**
     * 设备数量
     */
    private Integer amount;

    /**
     * 使用率
     */
    private BigDecimal rate;

    /**
     * 下级机构统计数据
     */
    private List<MachineReportUseRateDeptDto> list;

    /**
     * @Title count
     * @Description 计算使用率
     */
    public void count() {
        if (null == amount) {
            rate = new BigDecimal(100);
        } else if (null != taiban && null != days) {
            rate = taiban.multiply(new BigDecimal(100)).divide(new BigDecimal(days * amount), 2, RoundingMode.HALF_UP);
        }
    }

}
